/*
 * @lc app=leetcode.cn id=463 lang=java
 *
 * [463] 岛屿的周长
 */

// @lc code=start
class Solution {
    public int islandPerimeter(int[][] grid) {
        //我想到的方法就是遍历数边。但感觉写起来麻烦
        //有个聪明的做法，就是只看右边和下面，从开头遍历，直接+4，碰到右边和下面为1就-2.
        //这其实是数学的思想了
        int ans =0;
        for(int i =0 ;i<grid.length ;i++){
            for (int j = 0; j < grid[i].length; j++) {
                if(grid[i][j]==1){
                    ans+=4;//先直接加4
                    //如果grid[i+1][j]不超出数组并且也等于1（岛）则边减2
                    if(i+1<grid.length && grid[i+1][j] ==1){
                        ans-=2;
                    }
                    //如果grid[i][j+1]不超出数组并且也等于1（岛）则边减2
                    if(j+1<grid[i].length && grid[i][j+1]==1){
                        ans-=2;
                    }
                }
                
            }
        }
        return ans;

    }
}
// @lc code=end

